iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0
Software Development

被容器束縛住的小宇宙系列 第 28

Day28 建立外部儲存空間 -- NFS

  • 分享至 

  • xImage
  •  

經過這幾天的介紹後,漸漸的也來到了尾聲,剩最後的三天就要結束這挑戰了,今天介紹完最後一個工具 -- NFS 後,明天將會為各位整理出一些我這陣子所遇到的一些坑,希望可以幫助到大家。這邊我們廢話不多說,開始介紹今天的主角吧!

當我們架設一個服務於 K8s 時,有時可能需要記錄一些東西,例如:錄影檔、log檔或是一些文字紀錄等,但如果部署的機器儲存空間比較小,沒辦法存取那麼大量的資料時,這時候 NFS 就派上用場了!

那我們一直說 NFS,那他到底是何方神聖呢?
NFS 全名為「Network File System」,網絡文件系統,它分成了 Server 端與 Client 端,它可以讓 Client 端的使用者像是在本地存取資料,但實際上是存進 Server 端。

這邊讀者們應該對 NFS 有一定的認識了,那這邊就繼續介紹如何實作吧!
首先我們需要準備兩台機器,一部是要架設的 Server 端, 一部是要架設的 Client 端。
接下來需要分別安裝個別的套件:

Server --> pip install nfs-kernel-server
Client --> pip install nfs-common

安裝完後就可以開始先來設定 Server 端:

sudo apt install  -y
sudo mkdir "StoreDataFile"
echo "<Path/StoreDataFile> *(rw,sync,no_root_squash)" | sudo tee /etc/exports
sudo exportfs -r # reload

上面的 StoreDataFile 可以輸入自己想要創建的資料夾,在做完以上的操作後,Server 端的設定就先到了一個段落了!

接下來要繼續設定 Client 端:

mount NFS_SERVER_IP:<Path/StoreDataFile> <Data/Path>

在 Client 端主要要設定的為你要掛載 Server 的 IP 及位置,後面再把需要掛載的檔案設定上去,而到了這步,基本上就已經設定完全了!

在這之後,當我們建立服務需要 NFS 掛載時,需要在原本的 YAML 檔上再加上一些敘述,這邊我就以之前練習實作的 Pod 來為各位介紹。

# pod_test.yaml

apiVersion: v1
kind: Pod
metadata:
  name: ubuntu-pod
  labels: 
    app: test
spec:
  containers:
  - name: ubuntu
    image: ubuntu:20.04
    args: [bash, -c, 'for ((i = 0; ; i++)); do echo "$i: $(date)"; sleep 100; done']
  volumes:
  - name: nfs_test
    nfs:
      path: /home/test/Data
      server: 192.168.1.45

在 spec 裡面再增加一個 Key 為 volumes,在裡面設定你的 Server IP 及要掛載的位置,之後在 Pod 建立完後,可以輸入之前介紹過的 describe pod 指令去查看是否掛載完成。

而介紹到這邊,基礎的 NFS 掛載已經介紹完了,讀者可以試著自己試試看,看是否可以掛載成功!

今天就先介紹到這邊吧!大家掰掰!


上一篇
Day27 管理系統設定 -- ConfigMap
下一篇
Day29 操作 Kubenetes 時常會出現的一些錯誤
系列文
被容器束縛住的小宇宙30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言